﻿using System;
using System.Collections.Generic;
using System.Text;

namespace LibUpdate
{
    /// <summary>
    /// 版本号更新列表，集合类
    /// </summary>
    public class Colophon : System.Collections.ArrayList
    {
        /// <summary>
        /// 添加版本号
        /// </summary>
        /// <param name="version">版本号</param>
        public void Add(Version version)
        {
            base.Add(version);
            
        }

        /// <summary>
        /// 获得比当前版本的下一版本
        /// </summary>
        /// <param name="thisversion"></param>
        /// <returns>如果当前版本是最新版本，则返回一个初始的Version实例，该实例的版本号为0.0.0.0</returns>
        public Version NextVer(Version thisversion)
        {
            return NextVer(thisversion.VersionNum);
        }

        /// <summary>
        /// 获得比当前版本更新的下一版本
        /// </summary>
        /// <param name="ver">版本数据编号</param>
        public LibUpdate.Version NextVer(System.Version ver)
        {
            for (int i = 0; i < this.Count; i++)
            {
                
                //下一个并且当前对比版本不是最后一个
                if (this[i].VersionNum > ver )
                {
                    return this[i];
                }
            }
            return new Version();
        }

        /// <summary>
        /// 获得比当前版本更新的所有版本列表
        /// </summary>
        /// <param name="ver">版本数据编号</param>
        public LibUpdate.Colophon NextVerList(System.Version ver)
        {
            Colophon _temp_Colophon = new Colophon();
            for (int i = 0; i < this.Count; i++)
            {

                //下一个并且当前对比版本不是最后一个
                if (this[i].VersionNum > ver)
                {
                    _temp_Colophon.Add(this[i]);
                }
            }
            return _temp_Colophon;
        }

        /// <summary>
        /// 根据索引获得版本号
        /// </summary>
        public new Version   this[int index]
        {
            get
            {
                return (Version)base[index];
                
            }
            set
            {
                base[index] = value;
            }
        }


    
    }
}
